/**********************************************************/
/* Program that use the raw data otbained from SAS Files  */
/* to estimate total wage per year and allow a unique industry and occupation per year */
/***************************************************************************************/
/* Compress SAS data */
cd "C:\Users\Public\Documents\ImmPanelRevis19\"
use "ImmPanelRevis19\Donnees\indiv_dispm.dta", clear
compress
save  "ImmPanelRevis19\Donnees\indiv_dispm.dta", replace

use "ImmPanelRevis19\Donnees\indiv_dispw.dta", clear
compress
save  "ImmPanelRevis19\Donnees\indiv_dispw.dta", replace

/***********************/
/* 1- Permanent income */
/***********************/
clear
cd "C:\Users\Public\Documents\ImmPanelRevis19\"
/* total number of obs x year per individuals in the sample */
use "ImmPanelRevis19\donnees\indiv_dispm.dta", clear
append using "ImmPanelRevis19\donnees\indiv_dispw.dta"
/* nb of observations per year */
contract nninouv an
drop if missing( nninouv)
rename _freq nydads
save "ImmPanelRevis19\donnees\nydads.dta", replace

/* échantillon avec selection */
use "ImmPanelRevis19\donnees\indiv_dispm.dta", clear
append using "ImmPanelRevis19\donnees\indiv_dispw.dta"
compress
/* sous-échantillon pour travailler plus vite 
contract nninouv
gen select=rbinomial(1,0.01)
drop _freq
save temp.dta, replace
use "C:\Users\CYCLSAL_G_VERDUGO\Documents\Donnees\indiv_disp.dta", clear
sort nninouv
joinby nninouv using temp.dta, unm(m)
drop _merge
drop if select==0
save tempindiv.dta, replace
save tempI.dta, replace
*/

save temp.dta, replace

/* inclusion sample rule : */
/* keep only those present in 1975, 1982, 1990, 1999, 2007 */
drop if an!=1976 & an!=1982 & an!=1991 & an!=1999 & an!=2007
contract nninouv
gen sincl=1
drop _freq
save temp1.dta, replace
use temp.dta, clear
joinby nninouv using temp1.dta , unm(m)
drop if sincl!=1
drop _merge

/* real wages */
joinby an using	 "ImmPanelRevis19\donnees\ipc_ocdeSML.dta", unm(m)
drop _merge
replace sn=sn*(100/ipc_ocde)

/* concatenate multiple jobs in one year */
save temp.dta, replace
contract nninouv an
gen mult=(_freq>1)
drop if _freq==1
rename _freq nmult
save mult.dta, replace
use temp.dta, clear
joinby nninouv an using mult.dta, unm(m)
drop if missing(mult)

/* fait la somme du nombre de jours 
et du salaire net sur les multiples emplois */
/* durée de la paye total */
/* durée paye normalisée & salaire réel total */
save tempCOL.dta, replace
collapse (sum) dps=dp sns=sn, by(nninouv an) fast
save dps.dta, replace
use tempCOL.dta, clear

/* fusionne avec */
/* durée de paye totale */
use temp, clear
joinby nninouv an using dps.dta, unm(m)
drop _merge

/* garde comme référence 
la firme (ie secteur) 
avec le plus grand salaire */
sort nninouv an sn
by nninouv an: drop if _n != _N
egen indiv=group(nninouv)
xtset indiv an
joinby nninouv an using mult.dta, unm(m)

replace mult=0 if missing(mult)

/* remplace salaire en salaire max et durée de
paie totale dans dp et sn pour ceux dont on a de multiples
activitées dans une année */
replace dp=dps if mult==1
replace sn=sns if mult==1
replace dp=360 if dp>360

gen fy=(dp==360)

/* Calcul du "revenu permanent" => moyennes autour des 5 RP */
/* utilise plusieur définitions */

/* groupes pour calculer les moyennes */
gen group=1 if an==1976 | an==1977 |an==1978
replace group=2 if an==1980 | an==1982 | an==1984
replace group=3 if an==1989 | an==1991 | an==1992 
replace group=4 if an==1998 | an==1999 | an==2000 
replace group=5 if an==2005 | an==2006 | an==2007

save temp.dta, replace

drop if missing(group)
/* calcule la moyenne par individu à l'intérieur d'un groupe */
/* durée paye & salaire total */
save tempCOL.dta, replace
collapse (sum) dpP=dp snPT=sn (mean) snP=sn (count) snPN=sn , by(nninouv group) fast
save dps.dta, replace
use tempCOL.dta, clear

/* rajout l'année dans les groupes */
use dps.dta, clear
gen an=1976 if group==1
replace an=1982 if group==2
replace an=1991 if group==3
replace an=1999 if group==4
replace an=2007 if group==5
save dps.dta, replace

/* fusionne avec */
/* durée de paye totale & durée de paye normalisée */
use temp.dta , clear
drop if an!=1976 & an!=1982 & an!=1991 & an!=1999 & an!=2007
drop _merge
joinby nninouv an using dps.dta, unm(m)
drop _merge

/* rajoute un zéro si missing */
gen stg=(360*3) if group==1
replace stg=(360*3) if group==2
replace stg=(360*4) if group==3
replace stg=(360*5) if group==4
replace stg=(360*4) if group==5

/* repère les individus pour lesques observation complète sur la période */
gen obscp=(snPN==3 & group==1)
replace obscp=1 if snPN==3 & group==2
replace obscp=1 if snPN==4 & group==3
replace obscp=1 if snPN==5 & group==4
replace obscp=1 if snPN==4 & group==5

/* définition 1: salaire observé sur l'ensemble de la période 
avec revenus >0 ssi présent chaque années */
gen sndPT1=snPT/dpP if obscp
/* définition 2: moyenne observée même si manque */
gen sndPT2=snPT/dpP
/* définition 3: moyenne observé avec zéro si missing */
gen sndPT3=snPT/stg

keep nninouv an sndPT1 sndPT2 sndPT3 snPT dpP 
save "ImmPanelRevis19\donnees\permanent.dta", replace
clear
set memory 1m

/*******************/
/* STANDARD INCOME */
/*******************/
/* create individual sample */
/* deal with multiple full time jobs in a given year */
log using "ImmPanelRevis19\donnees\logindiv_disp.log" , replace
set memory 3500m

/* échantillon avec selection */
use "ImmPanelRevis19\donnees\indiv_dispm.dta", clear
append using "ImmPanelRevis19\donnees\indiv_dispw.dta"

drop if an!=1976 & an!=1982 & an!=1991 & an!=1999 & an!=2007
compress

/* sous-échantillon 
contract nninouv
gen select=rbinomial(1,0.1)
drop _freq
save temp.dta, replace
use "C:\Users\CYCLSAL_G_VERDUGO\Documents\Donnees\indiv_dispm.dta", clear
sort nninouv
joinby nninouv using temp.dta, unm(m)
drop _merge
drop if select==0 */

/* concatenate multiple jobs in one year */
save temp.dta, replace
contract nninouv an
gen mult=(_freq>1)
drop if _freq==1
rename _freq nmult
save mult.dta, replace
use temp.dta, clear
joinby nninouv an using mult.dta, unm(m)
drop if missing(mult)

/* fait la somme du nombre de jours 
et du salaire net sur les multiples emplois */
/* durée de la paye total */
/* durée paye normalisée & salaire réel total */
save tempCOL.dta, replace
collapse (sum) dps=dp sns=sn, by(nninouv an) fast
save dps.dta, replace
use tempCOL.dta, clear

/* fusionne avec */
/* durée de paye totale */
use temp, clear
joinby nninouv an using dps.dta, unm(m)
drop _merge

/* garde comme référence 
la firme (ie secteur) 
avec le plus grand salaire */
sort nninouv an sn
by nninouv an: drop if _n != _N
egen indiv=group(nninouv)
xtset indiv an
joinby nninouv an using mult.dta, unm(m)
drop _merge
replace mult=0 if missing(mult)

/* remplace salaire en salaire max et durée de
paie totale dans dp et sn pour ceux dont on a de multiples
activitées dans une année */
replace dp=dps if mult==1
replace sn=sns if mult==1
replace dp=360 if dp>360

gen fy=(dp==360)

joinby nninouv an using "ImmPanelRevis19\donnees\permanent.dta", unm(m)
drop _merge
save "ImmPanelRevis19\donnees\indiv.dta", replace

use "ImmPanelRevis19\donnees\indiv.dta", replace
keep if homme==1
save "ImmPanelRevis19\donnees\indivm.dta", replace

use "ImmPanelRevis19\donnees\indiv.dta", replace
keep if homme==0
save "ImmPanelRevis19\donnees\indivw.dta", replace

log close
